package com.zc.datastructure.structure.graph;

import java.util.List;
import java.util.Set;

/**
 * @author: zhuCan
 * @date: 2020/6/27 10:45
 * @description:
 */
public interface Graph<T> {

  /**
   * 创建一个只带空顶点的图
   *
   * @param vertex
   */
  void create(List<String> vertex);

  /**
   * 添加边
   *
   * @param edge
   */
  void addEdge(Edge<T> edge);

  /**
   * 获取 以start为起点 图中所有路线中的顶点
   * 深度优先遍历
   *
   * @return
   */
  List<String> DFS(String start, List<String> vertex);

  /**
   * 获取指定俩个顶点之间路线的数据
   *
   * @param Start
   * @param end
   * @param data
   * @return
   */
  Set<T> DFS(String Start, String end, Set<T> data);

  void reset();

}
